↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PrologToPiTRSProof
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
REVERSE_IN_AG(.(X, Xs), Ys) → U2_AG(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AG(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
REVERSE_IN_AA(.(X, Xs), Ys) → U2_AA(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AA(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_AAA(Zs, .(X, []), Ys)
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U1_AAA(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AG(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_AAG(Zs, .(X, []), Ys)
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U1_AAG(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ PrologToPiTRSProof
REVERSE_IN_AG(.(X, Xs), Ys) → U2_AG(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AG(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
REVERSE_IN_AA(.(X, Xs), Ys) → U2_AA(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AA(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_AAA(Zs, .(X, []), Ys)
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U1_AAA(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AG(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_AAG(Zs, .(X, []), Ys)
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U1_AAG(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAG(.(X, Zs)) → APP_IN_AAG(Zs)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
↳ PrologToPiTRSProof
APP_IN_AAA → APP_IN_AAA
APP_IN_AAA → APP_IN_AAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PrologToPiTRSProof
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PrologToPiTRSProof
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PrologToPiTRSProof
REVERSE_IN_AA → REVERSE_IN_AA
REVERSE_IN_AA → REVERSE_IN_AA
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
Infinitary Constructor Rewriting Termination of PiTRS implies Termination of Prolog
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
REVERSE_IN_AG(.(X, Xs), Ys) → U2_AG(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AG(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
REVERSE_IN_AA(.(X, Xs), Ys) → U2_AA(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AA(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_AAA(Zs, .(X, []), Ys)
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U1_AAA(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AG(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_AAG(Zs, .(X, []), Ys)
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U1_AAG(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
REVERSE_IN_AG(.(X, Xs), Ys) → U2_AG(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AG(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
REVERSE_IN_AA(.(X, Xs), Ys) → U2_AA(X, Xs, Ys, reverse_in_aa(Xs, Zs))
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AA(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
U2_AA(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_AAA(Zs, .(X, []), Ys)
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → U1_AAA(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_AG(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
U2_AG(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → APP_IN_AAG(Zs, .(X, []), Ys)
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → U1_AAG(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDP
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
↳ PiDP
APP_IN_AAG(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAG(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ QDPSizeChangeProof
↳ PiDP
↳ PiDP
APP_IN_AAG(.(X, Zs)) → APP_IN_AAG(Zs)
From the DPs we obtained the following set of size-change graphs:
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ PiDP
APP_IN_AAA(.(X, Xs), Ys, .(X, Zs)) → APP_IN_AAA(Xs, Ys, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
↳ PiDP
APP_IN_AAA → APP_IN_AAA
APP_IN_AAA → APP_IN_AAA
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
reverse_in_ag(.(X, Xs), Ys) → U2_ag(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa(.(X, Xs), Ys) → U2_aa(X, Xs, Ys, reverse_in_aa(Xs, Zs))
reverse_in_aa([], []) → reverse_out_aa([], [])
U2_aa(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_aa(X, Xs, Ys, app_in_aaa(Zs, .(X, []), Ys))
app_in_aaa(.(X, Xs), Ys, .(X, Zs)) → U1_aaa(X, Xs, Ys, Zs, app_in_aaa(Xs, Ys, Zs))
app_in_aaa([], Ys, Ys) → app_out_aaa([], Ys, Ys)
U1_aaa(X, Xs, Ys, Zs, app_out_aaa(Xs, Ys, Zs)) → app_out_aaa(.(X, Xs), Ys, .(X, Zs))
U3_aa(X, Xs, Ys, app_out_aaa(Zs, .(X, []), Ys)) → reverse_out_aa(.(X, Xs), Ys)
U2_ag(X, Xs, Ys, reverse_out_aa(Xs, Zs)) → U3_ag(X, Xs, Ys, app_in_aag(Zs, .(X, []), Ys))
app_in_aag(.(X, Xs), Ys, .(X, Zs)) → U1_aag(X, Xs, Ys, Zs, app_in_aag(Xs, Ys, Zs))
app_in_aag([], Ys, Ys) → app_out_aag([], Ys, Ys)
U1_aag(X, Xs, Ys, Zs, app_out_aag(Xs, Ys, Zs)) → app_out_aag(.(X, Xs), Ys, .(X, Zs))
U3_ag(X, Xs, Ys, app_out_aag(Zs, .(X, []), Ys)) → reverse_out_ag(.(X, Xs), Ys)
reverse_in_ag([], []) → reverse_out_ag([], [])
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
REVERSE_IN_AA(.(X, Xs), Ys) → REVERSE_IN_AA(Xs, Zs)
↳ Prolog
↳ PrologToPiTRSProof
↳ PrologToPiTRSProof
↳ PiTRS
↳ DependencyPairsProof
↳ PiDP
↳ DependencyGraphProof
↳ AND
↳ PiDP
↳ PiDP
↳ PiDP
↳ UsableRulesProof
↳ PiDP
↳ PiDPToQDPProof
↳ QDP
↳ NonTerminationProof
REVERSE_IN_AA → REVERSE_IN_AA
REVERSE_IN_AA → REVERSE_IN_AA